urllib.request 您所在的位置:网站首页 240python的urllibparse库解析URL urllib.request

urllib.request

2024-07-05 22:00| 来源: 网络整理| 查看: 265

URL 请求对象的抽象类。

url 应为一个包含有效的、被正确编码的 URL 的字符串。

data 必须是一个对象,用于给定发往服务器的附加数据,若无需此类数据则为 None 。 目前 唯一用到 data 的只有 HTTP 请求。支持的对象类型包括字节串、类文件对象和可遍历的类字节串对象。如果没有提供 Content-Length 和 Transfer-Encoding 头部字段, HTTPHandler 会根据 data 的类型设置这些头部字段。Content-Length 将用于发送字节对象,而 RFC 7230 第 3.3.1 节中定义的 Transfer-Encoding: chunked 将用于发送文件和其他可遍历对象。

对于 HTTP POST 请求方法而言,data 应该是标准 application/x-www-form-urlencoded 格式的缓冲区。 urllib.parse.urlencode() 函数的参数为映射对象或二元组序列,并返回一个该编码格式的 ASCII 字符串。在用作 data 参数之前,应将其编码为字节串。

headers 应当是一个字典,并将被视同附带了每个键和值作为参数去调用 add_header()。 这通常被用于 "伪装" User-Agent 标头值,浏览器会使用标头值来标识自己 -- 某些 HTTP 服务器只允许来自普通浏览器的请求而不允许来自脚本的请求。 例如,Mozilla Firefox 可能将自己标识为 "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11",而 urllib 的默认用户代理字符串则是 "Python-urllib/2.6" (在 Python 2.6 中)。 所有发送的标头键都使用驼峰命名法。

如果给出了 data 参数,则应当包含合适的 Content-Type 头部信息。若未提供且 data 不是 None,则会把 Content-Type: application/x-www-form-urlencoded 加入作为默认值。

接下来的两个参数,只对第三方 HTTP cookie 的处理才有用:

origin_req_host 应为发起初始会话的请求主机,定义参见 RFC 2965 。默认指为 http.cookiejar.request_host(self) 。这是用户发起初始请求的主机名或 IP 地址。假设请求是针对 HTML 文档中的图片数据发起的,则本属性应为对包含图像的页面发起请求的主机。

unverifiable 应该标示出请求是否无法验证,定义参见 RFC 2965 。默认值为 False 。所谓无法验证的请求,是指用户没有机会对请求的 URL 做验证。例如,如果请求是针对 HTML 文档中的图像,用户没有机会去许可能自动读取图像,则本参数应为 True。

method 应为字符串,标示要采用的 HTTP 请求方法(例如 'HEAD' )。如果给出本参数,其值会存储在 method 属性中,并由 get_method() 使用。如果 data 为 None 则默认值为 'GET' ,否则为 'POST'。子类可以设置 method 属性来标示不同的默认请求方法。

备注

如果 data 对象无法分多次传递其内容(比如文件或只能生成一次内容的可迭代对象)并且由于 HTTP 重定向或身份验证而发生请求重试行为,则该请求不会正常工作。 data 是紧挨着头部信息发送给 HTTP 服务器的。现有库不支持 HTTP 100-continue 的征询。

在 3.3 版本发生变更: Request 类增加了 Requesthod 参数。

在 3.4 版本发生变更: 默认 Requesthod 可以在类中标明。

在 3.6 版本发生变更: 如果给出了 Content-Length ,且 data 既不为 None 也不是字节串对象,则不会触发错误。而会退而求其次采用分块传输的编码格式。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有